Skip to content

AIR CLI Integration: --override flag functionality#5926

Open
riddhibhagwat-db wants to merge 1 commit into
air-clifrom
air-integration-m3-3
Open

AIR CLI Integration: --override flag functionality#5926
riddhibhagwat-db wants to merge 1 commit into
air-clifrom
air-integration-m3-3

Conversation

@riddhibhagwat-db

Copy link
Copy Markdown
Contributor

Changes

Ports --override KEY=VALUE from the Python CLI. Overrides apply to the parsed YAML map before re-decode + validate, so path existence, type coercion, and semantic validate() rules all run. A reflection-based path check names the exact --override key and lists available fields on error.

Why

--override allows users to tweak a training configuration at launch time without editing the file and this allows for ease of use with sweep hyperparameters or scalable compute without having to maintain a forked configuration for each run.

Tests

unit tests:

  • TestParseOverrides: parsing KEY=VALUE
  • TestValidateOverridePaths: dotted-path validation against the schema
  • TestLoadRunConfigWithOverrides: end-to-end through the loader: scalar coercion, multiple overrides, free-form env-var-as-string, auto-created intermediate maps, unknown-path rejection, semantic re-validation after override, type mismatch, malformed override.
  • TestSubmitWorkload: the harness pattern being extended to prove overrides reach the actual POST body sent to /api/2.2/jobs/runs/submit, verified against the in-process testserver that records the request.
  • TestSubmitWorkloadHonorsOverride: proves a --override actually changes what gets sent to the Jobs API on a real submit, not just during dry-run validation.

acceptance tests:

  • successful override that logs the change and then validates
  • an unknown field override that errors with an actionable message (see screenshots below)
  • override that passes type checking but fails schema validation (so we know that validate() still runs and works properly)

Manual verification:
Screenshot 2026-07-14 at 10 41 22 AM

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

Integration test report

Commit: b1066eb

Run: 29524100609

Env 💚​RECOVERED 🙈​SKIP ✅​pass 🙈​skip Time
💚​ aws linux 4 4 227 1103 4:50
💚​ aws windows 4 4 229 1101 6:51
💚​ aws-ucws linux 4 4 316 1019 5:46
💚​ aws-ucws windows 4 4 318 1017 7:34
💚​ azure linux 4 4 227 1102 4:44
💚​ azure windows 4 4 229 1100 6:49
💚​ azure-ucws linux 4 4 318 1016 6:10
💚​ azure-ucws windows 4 4 320 1014 7:28
💚​ gcp linux 4 4 226 1104 4:40
💚​ gcp windows 4 4 228 1102 6:43
8 interesting tests: 4 RECOVERED, 4 SKIP
Test Name aws linux aws windows aws-ucws linux aws-ucws windows azure linux azure windows azure-ucws linux azure-ucws windows gcp linux gcp windows
💚​ TestAccept 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
🙈​ TestAccept/bundle/invariant/no_drift 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_endpoints/drift/recreated_same_name 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/bundle/resources/vector_search_indexes/recreate/embedding_dimension 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
🙈​ TestAccept/ssh/connection 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S 🙈​S
💚​ TestFetchRepositoryInfoAPI_FromRepo 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/root 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
💚​ TestFetchRepositoryInfoAPI_FromRepo/subdir 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
Top 10 slowest tests (at least 2 minutes):
duration env testname
6:25 aws windows TestAccept
6:23 aws-ucws windows TestAccept
6:21 azure windows TestAccept
6:18 gcp windows TestAccept
6:15 azure-ucws windows TestAccept
2:58 aws linux TestAccept
2:55 azure linux TestAccept
2:55 gcp linux TestAccept
2:51 azure-ucws linux TestAccept
2:47 aws-ucws linux TestAccept

@riddhibhagwat-db

Copy link
Copy Markdown
Contributor Author

/debug-ci

@riddhibhagwat-db riddhibhagwat-db self-assigned this Jul 14, 2026
@riddhibhagwat-db

Copy link
Copy Markdown
Contributor Author

/trigger all

Base automatically changed from air-cli to main July 15, 2026 09:24
Port `--override KEY=VALUE` from the Python CLI's yaml_overrides.py. Overrides
are applied to the parsed YAML map before it is re-decoded and validated, so a
single pipeline enforces path existence, type coercion, and the semantic
validate() rules. A reflection-based path check runs first so an unknown or
mistyped path names the exact --override key and lists the available fields,
mirroring Python's _check_override_path.

Co-authored-by: Isaac
@riddhibhagwat-db riddhibhagwat-db changed the base branch from main to air-cli July 16, 2026 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants